单片机编程冒泡程序`

来源:百度知道 编辑:UC知道 时间:2024/06/29 01:14:22
单片机汇编冒泡程序..
写的脑袋都大勒..
希望有懂的人..写个给莪做个参照.不知道莪的错在哪里`.
题目:片内RAM40H单元开始存放5个无符号数.指出其中最大数送入50H单元
莪的思路是从40H,自减1.循环比较.
不知道对不对`?

打的我手都发麻了,还是copy一个吧。
程序如下:
ORG 1000H
MOV R0, #40H ; 数据区首址送R0
MOV R3, #63H ; 设置外循环次数在R3中
LP0: CLR 7FH ; 交换标志位2FH.7清0
MOV A, R3 ; 取外循环次数
MOV R2, A ; 设置内循环次数
MOV R0,#40H ; 重新设置数据区首址
LP1: MOV 20H, @R0 ; 数据区数据送20H单元中
MOV A, @ R0 ; 20H内容送A
INC R0 ; 修改地址指针(R0+1)
MOV 21H, @ R0 ; 下一个地址的内容送21H
CLR C ; Cy清0
SUBB A, 21H ; 前一个单元的内容与下一个单元的内容比较
JC LP2 ;若有借位(Cy =1),前者小,程序 转移到 LP2处执行,
若无借位(Cy =0),前者大,不转移,程序往下执行 MOV @ R0, 20H ; 前、后内容交换
DEC R0
MOV @ R0, 21H
INC R0 ; 修改地址指针(R0+1)
SETB 7FH ; 置位交换标志位2FH.7为1
LP2: DJNZ R2, LP1 ; 修改内循环次数R2(减少),
若R2≠0,则程序转到LP1 处仍执行循环,
若R2=0,程序结束循环,程序往下执行